import java.util.stream.IntStream;

public class IntStreamTest {
    public static IntStream genIntStream() {
        return IntStream.builder()
                .add(20)
                .add(13)
                .add(-2)
                .add(18)
                .build();
    }

    public static void main(String[] args) {
        // 每一个流只能使用一次，故下面每行测试都必须使用一个新的流，使用genIntStream()方法生成固定的流
        System.out.println("is所有元素的最大值：" + genIntStream().max().getAsInt());
        System.out.println("is所有元素的最小值：" + genIntStream().min().getAsInt());
        System.out.println("is所有元素的总和：" + genIntStream().sum());
        System.out.println("is所有元素的总数：" + genIntStream().count());
        System.out.println("is所有元素的平均值：" + genIntStream().average().getAsDouble());
        System.out.println("is所有元素的平方是否都大于20：" + genIntStream().allMatch(ele -> ele * ele > 20));
        System.out.println("is是否包含任何元素的平方大于20：" + genIntStream().anyMatch(ele -> ele * ele > 20));
        // 将is映射成一个新的Stream，新Stream的每个元素是原Stream元素的2倍+1
        IntStream newIs = genIntStream().map(ele -> ele * 2 + 1);
        // 使用方法引用的方式来遍历集合元素
        newIs.forEach(System.out::println);
    }
}
